#pragma once
#include "Binding/BoundExpression.hpp"
#include "Binding/BoundStatement.hpp"
#include "Symbols/VariableSymbol.hpp"

class BoundVariableDeclaration : public BoundStatement
{
public:
    SharedVariableSymbol  Variable;
    SharedBoundExpression Initializer;

public:
    BoundVariableDeclaration(SharedVariableSymbol variable, SharedBoundExpression initializer)
        : BoundStatement(BoundNodeKind::VariableDeclaration), Variable(variable), Initializer(initializer)
    {
    }

public:
    virtual std::vector<SharedBoundNode>                      GetChildren() override { return {this->Initializer}; }
    virtual std::vector<std::tuple<std::string, std::string>> GetProperties() override { return {{"Variable", this->Variable->GetName()}}; }
};
